#include "mypushbutton.h"


myPushbutton::myPushbutton(QWidget *parent):QPushButton(parent)
{
    this->setMouseTracking(true);//设置鼠标轨迹跟踪，否则需要按下鼠标才会跟踪鼠标的轨迹
}

void myPushbutton::paintEvent(QPaintEvent *pe)
{
    QPainter painter(this);//定义一个画家

    QBrush brush(QColor(111,111,111));//定义一个刷子
    painter.setBrush(brush);//把刷子给画家

    QPen pen;  // creates a default pen
    pen.setWidth(2);//设置笔的宽度为2
    pen.setColor(color);//把颜色赋值给笔

    painter.setPen(pen);//把笔给画家
    painter.setFont(QFont("黑体", 16));//构建一个字体给画家


    painter.drawRoundedRect(pe->rect(), 5.0, 5.0);//画圆角的矩形，矩形是当前函数的参数提供的
    pen.setColor(color);
    painter.setPen(pen);//把笔给画家
    painter.drawText(pe->rect(), Qt::AlignCenter, text());//在矩形的中间绘制QT两个字
}

void myPushbutton::mouseMoveEvent(QMouseEvent *e)
{
    qDebug()<<"鼠标进入按钮并移动"<<endl;
    color = QColor(255,0,0);
    qDebug()<<e->pos()<<endl;
    repaint();//触发系统的重绘事件，从而调用paintEvent函数
}

void myPushbutton::mousePressEvent(QMouseEvent *e)
{
    qDebug()<<"鼠标进入按钮并按下"<<endl;
    color = QColor(72,63,84);
    repaint();//触发系统的重绘事件，从而调用paintEvent函数
}

void myPushbutton::mouseReleaseEvent(QMouseEvent *e)
{
    qDebug()<<"鼠标进入按钮并放开"<<endl;
    color = QColor(255,0,0);
    repaint();//触发系统的重绘事件，从而调用paintEvent函数
}

void myPushbutton::leaveEvent(QEvent *event)
{
    qDebug()<<"鼠标离开了按钮"<<endl;
    color = QColor(0,0,0);
    repaint();
}
